home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / hash / RCS / Hash_InitTable.man,v < prev    next >
Text File  |  1988-12-30  |  3KB  |  101 lines

  1. head     1.1;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.1
  10. date     88.12.30.15.05.24;  author ouster;  state Exp;
  11. branches ;
  12. next     ;
  13.  
  14.  
  15. desc
  16. @@
  17.  
  18.  
  19.  
  20. 1.1
  21. log
  22. @Initial revision
  23. @
  24. text
  25. @\fB' $Header: Hash_InitTable,v 1.2 86/11/20 08:48:11 ouster Exp $ SPRITE (Berkeley)
  26. .so \*(]ltmac.sprite
  27. .HS Hash_InitTable lib
  28. .BS
  29. .SH NAME
  30. Hash_InitTable \- set up new hash table
  31. .SH SYNOPSIS
  32. \fB#include <hash.h>\fR
  33. .sp
  34. Hash_InitTable(\fItablePtr, numBuckets, keyType\fR)
  35. .AS Hash_Table numBuckets
  36. .SH ARGUMENTS
  37. .AP Hash_Table *tablePtr in
  38. Structure to use to hold information about hash table.  Caller
  39. must have allocated space at *tablePtr, but need not have initialized
  40. contents.
  41. .AP int numBuckets in
  42. How many buckets should be in table initially.  If <= 0, a reasonable
  43. default will be chosen.  In any case, the number of buckets will
  44. change dynamically as the number of entries in the table grows.
  45. .AP int keyType in
  46. What type of keys will be used for table:  \fBHASH_STRING_KEYS\fR,
  47. \fBHASH_ONE_WORD_KEYS\fR, or integer >= 2.
  48. .BE
  49.  
  50. .SH DESCRIPTION
  51. .LP
  52. \fBHash_InitTable\fR initializes a Hash_Table structure and sets up
  53. bucket storage for the table, with no entries in the table initially.
  54. It must be called before any other operations are performed on the
  55. hash table.
  56. .LP
  57. The \fIkeyType\fP argument indicates what type of keys will be used
  58. in the table.  HASH_STRING_KEYS means that all keys will be strings,
  59. and that the \fIkey\fP argument to procedures like Hash_FindEntry will
  60. be passed in as a string:
  61. .DS
  62.  
  63. Hash_Table table;
  64. Hash_Entry *entryPtr;
  65. char *key = "foobar";
  66.  
  67. Hash_InitTable(&table, 0, HASH_STRING_KEYS); 
  68. entryPtr = Hash_FindEntry(&table, key);
  69.  
  70. .DE
  71. If \fIkeyType\fP is HASH_ONE_WORD_KEYS,
  72. then keys will be one-word (Address) values;  \fIkey\fP arguments passed
  73. to procedures like \fBHash_FindEntry\fR may be integers or any other values of
  74. the same size as addresses, passed by casting the value to an Address:
  75. .DS
  76.  
  77. Hash_Table table;
  78. Hash_Entry *entryPtr;
  79. int key = 24;
  80.  
  81. Hash_InitTable(&table, 0, HASH_ONE_WORD_KEYS);
  82. entryPtr = Hash_FindEntry(&table, (Address) key);
  83.  
  84. .DE
  85. Finally, if \fIkeyType\fP is an integer greater than 1, then keys
  86. are multi-word values containing \fIkeyType\fP words (not bytes!),
  87. passed into procedures like \fBHash_FindEntry\fR by address:
  88. .DS
  89.  
  90. Hash_Table table;
  91. Hash_Entry *entryPtr;
  92. int key[6] = {1,2,3,4,5,6};
  93.  
  94. Hash_InitTable(&table, 0, 6);
  95. entryPtr = Hash_CreateEntry(tablePtr, (Address) key);
  96. .DE
  97.  
  98. .SH KEYWORDS
  99. hash table, initialization, key
  100. @
  101.